package groupd

import (
	"gogs.xiaoyuanjijiehao.com/antlinker/antcms/core/infod"
	"gogs.xiaoyuanjijiehao.com/antlinker/antcms/ddd"
)

// GroupService 信息组服务
type GroupService interface {
	ddd.DomainService
	// DeleteAllInfo 从所有组内删除指定的信息infoid
	// infoid 指定要删除的信息
	DeleteAllInfo(ctx ddd.Context, infoid string) error
	// // 指定信息是否匹配指定组
	// InfoMatchGroup(ctx ddd.Context, groupid string, infoid string) (bool, error)
	// // 追加信息进入指定组
	// AppendInfoByGroup(ctx ddd.Context, groupid string, infoid string) (bool, error)

	// // 追加批量信息进入指定组
	// AppendInfosByGroup(ctx ddd.Context, groupid string, gs []GroupInfoDesc) (bool, error)
	// // AutoAppendInfos 将一组信息自动追加到符合规则的组中
	// AutoAppendInfos(ctx ddd.Context, gs []GroupInfoDesc) error
}

func iniService(d ddd.Domain, repo GroupRepo) {
	svc := &groupService{repo: repo}
	svc.Init(svc, d, DomainID)
	repo.Init(repo, svc, DomainID)

}

type groupService struct {
	ddd.BaseService
	repo GroupRepo
	iar  infod.InfoAggregateRoot
}

// 指定信息是否匹配指定组
func (g groupService) DeleteAllInfo(c ddd.Context, infoid string) (err error) {
	return g.repo.DeleteAllInfo(c, infoid)
}

// // 指定信息是否匹配指定组
// func (g groupService) InfoMatchGroup(c ddd.Context, groupid string, infoid string) (ok bool, err error) {

// 	ga, err := g.repo.GetGroup(c, groupid)
// 	if err != nil {
// 		return
// 	}
// 	i, err := g.iar.GetInfo(c, infoid)
// 	if err != nil {
// 		return
// 	}
// 	if ga.Kind == 0 {
// 		return true, nil
// 	}
// 	for _, v := range ga.Rules {
// 		if v.ColumnID != "" && v.ColumnID != i.ColumnID {
// 			continue
// 		}
// 		if v.Org != "" && v.Org != i.Org {
// 			continue
// 		}
// 		if v.Own != "" && v.Own != i.Owner {
// 			continue
// 		}
// 		if v.Key != "" && (!strings.Contains(i.Content, v.Key) && !strings.Contains(i.Title, v.Key)) {
// 			continue
// 		}
// 		if len(v.Tags) > 0 {
// 			if len(i.Tags) < len(v.Tags) {
// 				continue
// 			}
// 			for _, t := range v.Tags {
// 				f := true
// 				for _, it := range i.Tags {
// 					if t == it {
// 						f = false
// 						break
// 					}
// 				}
// 				if f {
// 					continue
// 				}
// 			}

// 		}
// 		return true, nil
// 	}
// 	return false, nil
// }

// // // 追加信息进入指定组
// // func (g groupService) AppendInfoByGroup(ctx ddd.Context, groupid string, infoid string) (bool, error) {
// // 	g.re
// // 	return
// // }

// // // 追加批量信息进入指定组
// // func (g groupService) AppendInfosByGroup(ctx ddd.Context, groupid string, gs []GroupInfoDesc) (bool, error) {
// // 	return
// // }

// // AutoAppendInfos 将一组信息自动追加到符合规则的组中
// func (g groupService) AutoAppendInfos(ctx ddd.Context, gs []GroupInfoDesc) error {
// 	//g.repo.LoadGroups()
// 	return nil
// }
